{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting keras\n",
      "  Using cached https://files.pythonhosted.org/packages/54/e8/eaff7a09349ae9bd40d3ebaf028b49f5e2392c771f294910f75bb608b241/Keras-2.1.6-py2.py3-none-any.whl\n",
      "Requirement already satisfied: six>=1.9.0 in /usr/local/envs/py3env/lib/python3.5/site-packages (from keras)\n",
      "Requirement already satisfied: h5py in /usr/local/envs/py3env/lib/python3.5/site-packages (from keras)\n",
      "Requirement already satisfied: numpy>=1.9.1 in /usr/local/envs/py3env/lib/python3.5/site-packages (from keras)\n",
      "Requirement already satisfied: scipy>=0.14 in /usr/local/envs/py3env/lib/python3.5/site-packages (from keras)\n",
      "Requirement already satisfied: pyyaml in /usr/local/envs/py3env/lib/python3.5/site-packages (from keras)\n",
      "Installing collected packages: keras\n",
      "Successfully installed keras-2.1.6\n",
      "\u001b[33mYou are using pip version 9.0.3, however version 10.0.1 is available.\n",
      "You should consider upgrading via the 'pip install --upgrade pip' command.\u001b[0m\n"
     ]
    }
   ],
   "source": [
    "!pip install keras"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/envs/py3env/lib/python3.5/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n",
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "from keras.datasets import mnist\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz\n",
      "11493376/11490434 [==============================] - 1s 0us/step\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n"
     ]
    }
   ],
   "source": [
    "# load (downloaded if needed) the MNIST dataset\n",
    "(X_train, y_train), (X_test, y_test) = mnist.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/envs/py3env/lib/python3.5/site-packages/matplotlib/font_manager.py:1320: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
      "  (prop.get_family(), self.defaultFamily[fontext]))\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f4c1e9637f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplot(221)\n",
    "plt.imshow(X_train[0], cmap=plt.get_cmap('gray'))\n",
    "plt.subplot(222)\n",
    "plt.imshow(X_train[1], cmap=plt.get_cmap('gray'))\n",
    "plt.subplot(223)\n",
    "plt.imshow(X_train[2], cmap=plt.get_cmap('gray'))\n",
    "plt.subplot(224)\n",
    "plt.imshow(X_train[3], cmap=plt.get_cmap('gray'))\n",
    "# show the plot\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from keras.datasets import mnist\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from keras.layers import Dropout\n",
    "from keras.utils import np_utils"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "num_pixels = X_train.shape[1] * X_train.shape[2]\n",
    "# reshape the inputs so that they can be passed to the vanilla NN\n",
    "X_train = X_train.reshape(X_train.shape[0],num_pixels ).astype('float32')\n",
    "X_test = X_test.reshape(X_test.shape[0],num_pixels).astype('float32')\n",
    "# scale inputs\n",
    "X_train = X_train / 255\n",
    "X_test = X_test / 255"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# one hot encode the output\n",
    "y_train = np_utils.to_categorical(y_train)\n",
    "y_test = np_utils.to_categorical(y_test)\n",
    "num_classes = y_test.shape[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_1 (Dense)              (None, 1000)              785000    \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 10)                10010     \n",
      "=================================================================\n",
      "Total params: 795,010\n",
      "Trainable params: 795,010\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# buildng the model\n",
    "model = Sequential()\n",
    "# add 1000 units in the hidden layer\n",
    "# apply relu activation in hidden layer\n",
    "model.add(Dense(1000, input_dim=num_pixels,activation='relu'))\n",
    "# initialize the output layer\n",
    "model.add(Dense(num_classes, activation='softmax'))\n",
    "# compile the model\n",
    "model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
    "# extract the summary of model\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 60000 samples, validate on 10000 samples\n",
      "Epoch 1/5\n",
      "60000/60000 [==============================] - 4s 74us/step - loss: 0.4975 - acc: 0.8652 - val_loss: 0.2297 - val_acc: 0.9350\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
      "Epoch 2/5\n",
      "60000/60000 [==============================] - 1s 11us/step - loss: 0.2002 - acc: 0.9431 - val_loss: 0.1637 - val_acc: 0.9528\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
      "Epoch 3/5\n",
      "60000/60000 [==============================] - 1s 11us/step - loss: 0.1431 - acc: 0.9599 - val_loss: 0.1302 - val_acc: 0.9633\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
      "Epoch 4/5\n",
      "60000/60000 [==============================] - 1s 12us/step - loss: 0.1103 - acc: 0.9695 - val_loss: 0.1079 - val_acc: 0.9687\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n",
      "Epoch 5/5\n",
      "60000/60000 [==============================] - 1s 11us/step - loss: 0.0870 - acc: 0.9758 - val_loss: 0.0924 - val_acc: 0.9733\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.History at 0x7f4c1edf17b8>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=5, batch_size=1024, verbose=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
